# 给定一个包含若干数字的字符串num_str，如何将其转换为int类型的num呢？最简单的方式是使用强制类型转换，即
num_str = "12345"
num = int(num_str)
# 如果不允许直接使用int(num_str)，如何使用遍历的方式，将num_str转换成int类型的num
# 可以初始化变量num为0，然后从左到右遍历num_str中的每一个字符ch，将num扩大十倍后将加上int(ch)的结果重新赋值给num，直到遍历结束。
num_str = "12345"
num = 0
for ch in num_str:
    num = num * 10 + int(ch)

# 字符串中的isalpha()方法用以判断字符串中是否均为字母，
# isdigit()方法用以判断字符串中是否均为数字，
# isalnum()方法用以判断字符串中是否均为字母和数字，
# 根据判断结果返回一个布尔类型。
s = "123abc"

print(s[-1].isalpha())    # True
print(s.isalpha())        # False

print(s[0].isdigit())     # True
print(s.isdigit())        # False

print(s.isalnum())        # True

# 字符串中的islower()和isupper()方法用以判断字符串中是否均为小写字母或大写字母，根据判断结果返回一个布尔类型。注意当字符串中同时包含大小写字母，
# 或包含数字或其他符号时，均会返回False。
s1 = "abc"
print(s1.islower())    # True
print(s1.isupper())    # False

s2 = "ABC"
print(s2.islower())    # False
print(s2.isupper())    # True

s3 = "aBC"
print(s3.islower())    # False
print(s3.isupper())    # False

s4 = "1"
print(s4.islower())    # False
print(s4.isupper())    # False

# 字符串中的lower()和upper()方法可以将字符串中的所有小写字母转化为大写，或者将所有大写字母转化为小写，
# 并返回一个新的字符串，原字符串不发生改变。
s = "aBc123"
s_upper = s.upper()    # 得到"ABC123"
s_lower = s.lower()    # 得到"abc123"
# 字符串中的title()方法可以令字符串中的所有单词的首字母大写，并返回一个新的字符串，原字符串不发生改变。
# 这个方法的使用频率较低。
s = "i love python"
s_title = s.title()    # 得到"I Love Python"

# 字符串中的replace(x, y)方法可以将原字符串中的字符串x替换为字符串y，
# 并返回一个新的字符串，原字符串不发生改变。
s = "aBc123"
s1 = s.replace("a", "d")
s2 = s.replace("123", "4")

# 字符串中的split(x)方法以字符串x为分割符，将原字符串分割为一个新的列表并返回，原字符串不发生改变。如果不传入参数x，则默认为按照空格" "进行分割。
# 最常用的分隔符为空格" "或者逗号","。
s = "1 2 3 4 5"
lst = s.split()
# 等价于lst = s.split(" ")

s = "1,2,3,4,5"
lst = s.split(",")

# 两种分割均会得到lst = ["1", "2", "3", "4", "5"]

# 字符串中的join(lst)方法以原字符串为合并符，将列表lst合并为一个新的字符串并返回。注意lst中的元素必须是字符串。最常用的合并符为空字符串""、
# 空格字符串" "。
lst = ["a", "b", "c"]
s = "".join(lst)
# 会得到s = "abc"

s_space = " ".join(lst)
# 会得到s_space = "a b c"

s_star = "*".join(lst)
# 会得到s_star = "a*b*c"